/**
 * @file ClientPub.hpp
 * @brief 采用ZeroMQ技术的消息广播模块
 * @note 绑定地址恒为tcp://0.0.0.0:端口号
 */

#ifndef CLIENT_PUB_H
#define CLIENT_PUB_H

#include <string>
#include <zmq.hpp>
#include <zmq_addon.hpp>

/**
 * @class ClientPub
 * @brief 用于Client模块的消息发布功能
 */
class ClientPub {
  zmq::context_t context;
  zmq::socket_t publisher;

public:
  /**
   * @brief 构造函数
   *
   * @param port TCP端口号
   */
  ClientPub(int port);
  /**
   * @brief 发送消息
   *
   * @param msg 消息内容
   */
  void Message(const std::string &msg);
  /**
   * @brief 相机下线消息
   *
   * @param UUID 相机UUID
   */
  void CameraOffline(const std::string &UUID);
  /**
   * @brief 开始拍摄
   *
   * @param UUID 相机UUID
   */
  void StartShot(const std::string &UUID);
  /**
   * @brief 停止拍摄
   *
   * @param UUID 相机UUID
   */
  void StopShot(const std::string &UUID);
};

#endif
